/**
 * 
 */
package ar.com.fiuba.team2.parser;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import ar.com.fiuba.team2.model.MensajeChat;
import ar.com.fiuba.team2.model.MiembroChat;

/**
 * @author sergio
 *
 */
public abstract class MensajeParser  extends GeneralParser {

	private static Logger log = LogManager.getLogger(MensajeParser.class);
	
	/**
	 * 
	 * @param xml
	 * @return list of {@link MensajeChat} with {@link MiembroChat} only with id.
	 */
	public static List<MensajeChat> parseAllMensajes(String xml) {
		List<MensajeChat> mensajes = new ArrayList<MensajeChat>();

		log.info("mensaje a parsear" + xml);
		
		SAXBuilder saxBuilder = new SAXBuilder();
		try {
		    Document doc = saxBuilder.build(new StringReader(xml));
		    List<Element> children = doc.getRootElement().getChildren();
		    for (Element element : children) {
		    	MensajeChat mensaje = new MensajeChat();
		    	mensaje.fromXML(element);
		    	mensajes.add(mensaje);
			}
		} catch (JDOMException e) {
			log.error("error al parsear mensaje", e);
		} catch (IOException e) {
			log.error("error al parsear mensaje", e);
		} catch (RuntimeException e) {
			log.error("error al parsear mensaje", e);
		}
		
		return mensajes;
	}
}
